package rsj.api.org.entity;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import common.entity.PageInfo;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.groups.Default;
import java.time.LocalDate;
import java.util.Objects;

/**
 * 使用情况报表 参数
 *
 * @author yuanqinglong
 * @since 2021/3/3 17:13
 */
@Data
public class UsageReportParam {


    /**
     * 机构id
     */
    @NotBlank(message = "机构id不可为空", groups = {OrgIdNotNull.class})
    private String statOrgId;
    /**
     * 接口id
     */
    @NotBlank(message = "接口id不可为空", groups = {ProdUidNotNull.class})
    private String statProdUid;
    /**
     * 合同id
     */
    @NotBlank(message = "合同id不可为空", groups = {OrgpIdNotNull.class})
    private String statOrgpId;

    /**
     * 统计时间
     */
    //@Past(message = "统计时间需要一个过去的时间")
    private LocalDate statDate;
    /**
     * 分页信息
     */
    @Valid
    @JSONField(name = "_page_")
    @NotNull(message = "分页信息不可为空", groups = Pagination.class)
    private PageInfo pageInfo;

    /**
     * 显示行数
     */
    private Integer pageSize;

    /**
     * 页码
     */
    private Integer pageNow;

    /**
     * 环境（01：测试环境，02：生产环境，03：线下测试环境）
     */
    private String environment;


    public Integer getPageSize() {
        if(Objects.nonNull(pageInfo)) {
            pageSize = pageInfo.getPageSize();
        }
        return pageSize;
    }

    public Integer getPageNow() {
        if(Objects.nonNull(pageInfo)) {
            pageNow = pageInfo.getPageOffSet();
        }
        return pageNow;
    }

    /**
     * （校验statProdUid不可为空）
     */
    public interface ProdUidNotNull extends Default {
    }

    /**
     * （校验statOrgId不可为空）
     */
    public interface OrgIdNotNull extends Default {
    }

    /**
     * （校验statOrgpId不可为空）
     */
    public interface OrgpIdNotNull extends Default {
    }


    /**
     * 查询列表（校验分页参数不可为空）
     */
    public interface Pagination extends Default {
    }
}
